Web parity: reconcile June web branches into main - #266
Merged
Conversation
…ision) Rebuild p8/web-export-refresh cleanly on top of origin/main (e138c1e) so the WASM build carries the modern multiplayer lobby (#245/#246), the slimmed title menu / in-lobby map picking (#248), the fixed-timestep swept-collision combat (#243), and the 2026-07-04 gameplay + leaderboard batches — none of which were on the old web branch. The prior branch had diverged with parallel refactors (a time-less KillStreakTracker, an inline sim-timestep loop, ShowEnemyNames=true) that main superseded; those are dropped. Only the genuinely web-essential layer is re-applied on top of pristine main, all GODOT_WEB-gated or additive so desktop / Android / test builds are byte-identical to main: - Build config: Program.cs (WASM entry point), TankGame.sln, and the csproj web PropertyGroup/ItemGroup (OutputType=Exe, WasmEnableThreads, GODOT_WEB define, Sentry + GoDotTest excluded on web, trimmer roots). - export_presets.cfg: the [preset.1] Web export preset. - EntityId.Next() replaces Guid.NewGuid() for entity ids + ArenaSeed — the WASM runtime's crypto RNG is unavailable, so Guid.NewGuid() returns a constant there (colliding ids break combat; a frozen ArenaSeed kills the random-map feature). - Web resource fallbacks (not #if-gated, harmless on desktop): TranslationLoader loads imported .translation resources, SfxPool loads the imported AudioStream, Bootstrap skips Sentry/the test runner on web. - fire.ogg recompressed (40 KB -> 4 KB) for the web bundle. Verified: dotnet build 0/0; pure suite Architecture 14 / Domain 57 / GameLogic 456 / Infrastructure 48; headless GoDotTest 172 — all green. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> # Conflicts: # client/export_presets.cfg
EntityId's web counter restarts at 0 every page load, so seeding the arena from EntityId.Next().GetHashCode() alone rolled the identical "random" arena (layout, AI names, personalities) every web session. Mix in wall-clock ticks via HashCode.Combine — desktop stays effectively random, web now varies per session. Also update docs/web-export.md status header (branch is web-reconcile-256, reconciled onto main — no longer the unmerged feat/web-export). No regression test: the bug is cross-session determinism of a static seed rolled from a process-lifetime counter + wall clock; not observable within one in-process test run. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…efresh doc Finish reconciling the June/July web branches onto main (on top of the two cherry-picks e418ee0 + fc1e4e7): - NetPowerup / PowerupDirector ids go through EntityId.Next() — both were added to main after the web branch diverged and still used Guid.NewGuid(), which is constant on the WASM runtime (colliding ids). - SfxPool.FireOffsetDb −20 → −6 dB: the −20 was tuned for the old loud 40 KB fire clip; the 4.4 KB cartoon pew this branch restores is intrinsically much quieter. −6 keeps fire (the most frequent SFX) just under the other gameplay sounds; final level is owner-ear-gated. - docs/web-export.md rewritten to match main: web layer lives on main, old branches superseded list, multiplayer milestone delivered (ADR-0019/0021), canvas_resize_policy + lobby HTTP + slot carry + name labels already on main. Verified: Architecture 14 / Domain 69 / GameLogic 562 / Infrastructure 54; headless GoDotTest 195 — all green. Web export smoke-built with the ComplexRobot editor: index.wasm 53.7 MB + index.pck 51.2 MB (managed C# present). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Audited all 9 commits on the four old web branches (feat/web-export, web-export-deploy, web-reconcile, web-reconcile-256): 4 ported, 5 already-in-main/superseded — full audit table in the plan/branch commits.
Ported so the arcade WASM export ships from main alone:
Web export smoke-built: 53.7 MB index.wasm + 51.2 MB index.pck (managed C# present). All four xUnit suites + 195 headless GoDotTest green (verified independently by orchestrator).
🤖 Generated with Claude Code